package queue;

import java.util.List;

public class MyQueue {
    //节点类
    class ListNode {
        int val;//存储的值
        ListNode pre;//前一个节点的地址
        ListNode next;//后一个节点的地址

        public ListNode(int val) {
            this.val = val;
        }
    }
    int usedSize=0;
    ListNode head=null;//头节点--->队头元素
    ListNode tail=null;//尾节点--->队尾元素
    public boolean offer(int n){
            ListNode node=new ListNode(n);
        if (head==null){
            //插入第一个元素
            tail=head=node;
        }else {
            tail.next=node;
            node.pre=tail;
            tail=node;
        }
        usedSize++;
        return true;
    }
    public int poll(){
        //此处需要分三种情况1·队列为空  2·队列不为空但就一个元素   3·多个元素
        if (!isEmpty() && head!=tail){
            //多个元素的情况
            int ret=head.val;
            head=head.next;
            head.pre=null;
            usedSize--;
            return ret;
        }else if (!isEmpty()&&head==tail){
            //一个元素
            int ret=head.val;
            head=tail=null;
            usedSize--;
            return  ret;
        }else return -1;//没有元素情况
    }


    public int peek(){
        if (!isEmpty()){
            int ret=head.val;
            return ret;
        }else return -1;
    }

    public boolean isEmpty(){
        return usedSize==0;
    }

    public int size(){
        return usedSize;
    }


}
